﻿/**
 * @file coverwidgetitemtableview.cpp
 * @author huangxb
 * @email 18228033207@163.com
 * @date 2024.04.04
 * @license MIT License
 * @brief 自定义tableview.
 * 演示通过自定义widget覆盖视图项所在位置来显示自定义控件
 *
 * @htmlonly
 * <span style="font-weight: bold">History</span>
 * @endhtmlonly
 * Version|Auther|Date|Describe
 * ------|----|------|--------
 * V1.0|huangxb|2024.04.04|创建
 */

/* 自定义头文件 */
#include "coverwidgetitemtableview.h"
#include "ui_coverwidgetitemtableview.h"
#include "filemodel.h"
#include "filemodelcontroller.h"
#include "coverwidgetheaderview.h"
/* 库头文件 */
#include <QCheckBox>
#include <QTableWidget>

static const int COLUMN_MIN_WIDTH = 28; /**< 列最小宽度 */

CCoverWidgetItemTableView::CCoverWidgetItemTableView(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::CCoverWidgetItemTableView)
    // , m_pFileModel(FileModelController()->GetFileModel())
    // , m_pController(new CController)
{
    ui->setupUi(this);

    // /* 初始化选中数量 */
    // ui->m_checkedAmount_label->setText(tr("checked (%1) items").arg(0));
    // /* 设置表格model*/
    // ui->tableView->setModel(m_pFileModel);
    // /* 设置一次选中一行，支持多选 */
    // ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    // ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
    // /* 设置水平表格头 */
    // CCoverWidgetHeaderView *pHeader = new CCoverWidgetHeaderView(Qt::Horizontal, ui->tableView->viewport());
    // ui->tableView->setHorizontalHeader(pHeader);
    // /* 设置水平表格头的checkbox控件 */
    // QWidget *widget = new QWidget;
    // QHBoxLayout *hBoxLayout = new QHBoxLayout;
    // hBoxLayout->setContentsMargins(1,1,1,1);
    // widget->setLayout(hBoxLayout);
    // QCheckBox *checkbox = new QCheckBox();
    // hBoxLayout->addStretch();
    // hBoxLayout->addWidget(checkbox);
    // hBoxLayout->addStretch();
    // pHeader->SetWidget(EFMH_COLUMN_CHECK, widget);
    // /* 设置列宽 */
    // ui->tableView->setColumnWidth(EFMH_COLUMN_ERR, COLUMN_MIN_WIDTH);
    // ui->tableView->setColumnWidth(EFMH_COLUMN_CHECK, COLUMN_MIN_WIDTH);
    // /* 文件名称一般较长，因此拉伸该列 */
    // pHeader->setSectionResizeMode(EFMH_COLUMN_FILE_NAME, QHeaderView::Stretch);
    // /* 设置内容宽度自适应，避免其他列出现换行 */
    // ui->tableView->resizeColumnsToContents();
    // /* 隐藏垂直表格头 */
    // ui->tableView->verticalHeader()->setVisible(false);
    // /* 设置表格无焦点 */
    // ui->tableView->setFocusPolicy(Qt::NoFocus);

    // SetModel(m_pController->GetModel());

    // connect(ui->tableView->selectionModel(), &QItemSelectionModel::selectionChanged,
    //         this, &CCoverWidgetItemTableView::OnTableItemSelectionChange);
}

CCoverWidgetItemTableView::~CCoverWidgetItemTableView()
{
    delete ui;
}

void CCoverWidgetItemTableView::OnTableItemSelectionChange(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
{
    // auto listSelRow = GetSelectedRows();

    // ui->m_moveUp_pushButton->setEnabled(!listSelRow.contains(0));
    // ui->m_moveDown_pushButton->setEnabled(!listSelRow.contains(m_pFileModel->rowCount()-1));

    // ui->m_checkedAmount_label->setText(tr("checked (%1) items").arg(listSelRow.count()));
}

void CCoverWidgetItemTableView::on_tableView_clicked(const QModelIndex &index)
{
    // ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
    // ui->tableView->selectRow(index.row());
    // ui->tableView->setSelectionMode(QAbstractItemView::NoSelection);
}

void CCoverWidgetItemTableView::on_m_moveUp_pushButton_clicked()
{
    // auto listSelRow = GetSelectedRows();

    // for(auto& nRow : listSelRow)
    // {
    //     auto listColumn = m_pFileModel->takeRow(nRow);
    //     m_pFileModel->insertRow(nRow-1, listColumn);
    // }

    // ui->tableView->clearSelection();
    // QAbstractItemView::SelectionMode oldMode = ui->tableView->selectionMode();
    // ui->tableView->setSelectionMode(QAbstractItemView::SelectionMode::MultiSelection);
    // for(int i = 0; i < listSelRow.count(); i++)
    // {
    //     int nCurRow = listSelRow.at(i) - 1;
    //     if(nCurRow<0)
    //     {
    //         continue;
    //     }
    //     ui->tableView->selectRow(nCurRow);
    // }
    // ui->tableView->setSelectionMode(oldMode);
}

QList<int> CCoverWidgetItemTableView::GetSelectedRows()
{
    // QModelIndexList List = ui->tableView->selectionModel()->selectedIndexes();
    QList<int> ListRow;
    // foreach(QModelIndex index, List)
    // {
    //     int nRow = index.row();
    //     if(!ListRow.contains(nRow))
    //     {
    //         ListRow.push_back(nRow);
    //     }
    // }

    // if(ListRow.count() > 0)
    // {
    //     std::sort(ListRow.begin(),ListRow.end(),
    //               [](const int IndexA,const int IndexB){return IndexA < IndexB;});
    // }

    return ListRow;
}

void CCoverWidgetItemTableView::on_m_moveDown_pushButton_clicked()
{
    // auto listSelRow = GetSelectedRows();

    // for(auto& nRow : listSelRow)
    // {
    //     auto listColumn = m_pFileModel->takeRow(nRow);
    //     m_pFileModel->insertRow(nRow+1, listColumn);
    // }

    // ui->tableView->clearSelection();
    // QAbstractItemView::SelectionMode oldMode = ui->tableView->selectionMode();
    // ui->tableView->setSelectionMode(QAbstractItemView::SelectionMode::MultiSelection);
    // for(int i = 0; i < listSelRow.count(); i++)
    // {
    //     int nCurRow = listSelRow.at(i) + 1;
    //     if(nCurRow>=m_pFileModel->rowCount())
    //     {
    //         continue;
    //     }
    //     ui->tableView->selectRow(nCurRow);
    // }
    // ui->tableView->setSelectionMode(oldMode);
}


void CCoverWidgetItemTableView::on_m_delete_pushButton_clicked()
{
    // auto listSelRow = GetSelectedRows();

    // for(auto& nRow : listSelRow)
    // {
    //     m_pFileModel->removeRow(nRow);
    // }

    // ui->m_delete_pushButton->setEnabled(m_pFileModel->rowCount()>0);
}


void CCoverWidgetItemTableView::on_lineEdit_textChanged(const QString &arg1)
{
    // m_pController->Test(arg1);
}

void CCoverWidgetItemTableView::OnSel(int nCount)
{
    // ui->m_checkedAmount_label->setText(tr("checked (%1) items").arg(nCount));
}

